!function (e, t) {
    if ("object" == typeof exports && "object" == typeof module) module.exports = t(); else if ("function" == typeof define && define.amd) define([], t); else {
        var n = t();
        for (var r in n) ("object" == typeof exports ? exports : e)[r] = n[r]
    }
}(this, function () {
    return function (e) {
        function t(r) {
            if (n[r]) return n[r].exports;
            var i = n[r] = {exports: {}, id: r, loaded: !1};
            return e[r].call(i.exports, i, i.exports, t), i.loaded = !0, i.exports
        }

        var n = {};
        return t.m = e, t.c = n, t.p = "", t(0)
    }([function (e, t, n) {
        n(6), n(7), e.exports = n(8)
    }, function (e, t, n) {
        (function (t) {
            !function (n) {
                function r(e, t) {
                    return function () {
                        e.apply(t, arguments)
                    }
                }

                function i(e) {
                    if ("object" != typeof this) throw new TypeError("Promises must be constructed via new");
                    if ("function" != typeof e) throw new TypeError("not a function");
                    this._state = null, this._value = null, this._deferreds = [], l(e, r(a, this), r(s, this))
                }

                function o(e) {
                    var t = this;
                    return null === this._state ? void this._deferreds.push(e) : void f(function () {
                        var n = t._state ? e.onFulfilled : e.onRejected;
                        if (null === n) return void(t._state ? e.resolve : e.reject)(t._value);
                        var r;
                        try {
                            r = n(t._value)
                        } catch (i) {
                            return void e.reject(i)
                        }
                        e.resolve(r)
                    })
                }

                function a(e) {
                    try {
                        if (e === this) throw new TypeError("A promise cannot be resolved with itself.");
                        if (e && ("object" == typeof e || "function" == typeof e)) {
                            var t = e.then;
                            if ("function" == typeof t) return void l(r(t, e), r(a, this), r(s, this))
                        }
                        this._state = !0, this._value = e, u.call(this)
                    } catch (n) {
                        s.call(this, n)
                    }
                }

                function s(e) {
                    this._state = !1, this._value = e, u.call(this)
                }

                function u() {
                    for (var e = 0, t = this._deferreds.length; t > e; e++) o.call(this, this._deferreds[e]);
                    this._deferreds = null
                }

                function c(e, t, n, r) {
                    this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof t ? t : null, this.resolve = n, this.reject = r
                }

                function l(e, t, n) {
                    var r = !1;
                    try {
                        e(function (e) {
                            r || (r = !0, t(e))
                        }, function (e) {
                            r || (r = !0, n(e))
                        })
                    } catch (i) {
                        if (r) return;
                        r = !0, n(i)
                    }
                }

                var f = "function" == typeof t && t || function (e) {
                    setTimeout(e, 1)
                }, d = Array.isArray || function (e) {
                    return "[object Array]" === Object.prototype.toString.call(e)
                };
                i.prototype["catch"] = function (e) {
                    return this.then(null, e)
                }, i.prototype.then = function (e, t) {
                    var n = this;
                    return new i(function (r, i) {
                        o.call(n, new c(e, t, r, i))
                    })
                }, i.all = function () {
                    var e = Array.prototype.slice.call(1 === arguments.length && d(arguments[0]) ? arguments[0] : arguments);
                    return new i(function (t, n) {
                        function r(o, a) {
                            try {
                                if (a && ("object" == typeof a || "function" == typeof a)) {
                                    var s = a.then;
                                    if ("function" == typeof s) return void s.call(a, function (e) {
                                        r(o, e)
                                    }, n)
                                }
                                e[o] = a, 0 === --i && t(e)
                            } catch (u) {
                                n(u)
                            }
                        }

                        if (0 === e.length) return t([]);
                        for (var i = e.length, o = 0; o < e.length; o++) r(o, e[o])
                    })
                }, i.resolve = function (e) {
                    return e && "object" == typeof e && e.constructor === i ? e : new i(function (t) {
                        t(e)
                    })
                }, i.reject = function (e) {
                    return new i(function (t, n) {
                        n(e)
                    })
                }, i.race = function (e) {
                    return new i(function (t, n) {
                        for (var r = 0, i = e.length; i > r; r++) e[r].then(t, n)
                    })
                }, i._setImmediateFn = function (e) {
                    f = e
                }, i.prototype.always = function (e) {
                    var t = this.constructor;
                    return this.then(function (n) {
                        return t.resolve(e()).then(function () {
                            return n
                        })
                    }, function (n) {
                        return t.resolve(e()).then(function () {
                            throw n
                        })
                    })
                }, "undefined" != typeof e && e.exports ? e.exports = i : n.Promise || (n.Promise = i)
            }(this)
        }).call(t, n(2).setImmediate)
    }, function (e, t, n) {
        (function (e, r) {
            function i(e, t) {
                this._id = e, this._clearFn = t
            }

            var o = n(3).nextTick, a = Function.prototype.apply, s = Array.prototype.slice, u = {}, c = 0;
            t.setTimeout = function () {
                return new i(a.call(setTimeout, window, arguments), clearTimeout)
            }, t.setInterval = function () {
                return new i(a.call(setInterval, window, arguments), clearInterval)
            }, t.clearTimeout = t.clearInterval = function (e) {
                e.close()
            }, i.prototype.unref = i.prototype.ref = function () {
            }, i.prototype.close = function () {
                this._clearFn.call(window, this._id)
            }, t.enroll = function (e, t) {
                clearTimeout(e._idleTimeoutId), e._idleTimeout = t
            }, t.unenroll = function (e) {
                clearTimeout(e._idleTimeoutId), e._idleTimeout = -1
            }, t._unrefActive = t.active = function (e) {
                clearTimeout(e._idleTimeoutId);
                var t = e._idleTimeout;
                t >= 0 && (e._idleTimeoutId = setTimeout(function () {
                    e._onTimeout && e._onTimeout()
                }, t))
            }, t.setImmediate = "function" == typeof e ? e : function (e) {
                var n = c++, r = arguments.length < 2 ? !1 : s.call(arguments, 1);
                return u[n] = !0, o(function () {
                    u[n] && (r ? e.apply(null, r) : e.call(null), t.clearImmediate(n))
                }), n
            }, t.clearImmediate = "function" == typeof r ? r : function (e) {
                delete u[e]
            }
        }).call(t, n(2).setImmediate, n(2).clearImmediate)
    }, function (e, t) {
        function n() {
            c = !1, a.length ? u = a.concat(u) : l = -1, u.length && r()
        }

        function r() {
            if (!c) {
                var e = setTimeout(n);
                c = !0;
                for (var t = u.length; t;) {
                    for (a = u, u = []; ++l < t;) a && a[l].run();
                    l = -1, t = u.length
                }
                a = null, c = !1, clearTimeout(e)
            }
        }

        function i(e, t) {
            this.fun = e, this.array = t
        }

        function o() {
        }

        var a, s = e.exports = {}, u = [], c = !1, l = -1;
        s.nextTick = function (e) {
            var t = new Array(arguments.length - 1);
            if (arguments.length > 1) for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
            u.push(new i(e, t)), 1 !== u.length || c || setTimeout(r, 0)
        }, i.prototype.run = function () {
            this.fun.apply(null, this.array)
        }, s.title = "browser", s.browser = !0, s.env = {}, s.argv = [], s.version = "", s.versions = {}, s.on = o, s.addListener = o, s.once = o, s.off = o, s.removeListener = o, s.removeAllListeners = o, s.emit = o, s.binding = function (e) {
            throw new Error("process.binding is not supported")
        }, s.cwd = function () {
            return "/"
        }, s.chdir = function (e) {
            throw new Error("process.chdir is not supported")
        }, s.umask = function () {
            return 0
        }
    }, function (e, t) {
        function n() {
            var e = ~navigator.userAgent.indexOf("Android") && ~navigator.vendor.indexOf("Google") && !~navigator.userAgent.indexOf("Chrome");
            return e && navigator.userAgent.match(/AppleWebKit\/(\d+)/).pop() <= 534 || /MQQBrowser/g.test(navigator.userAgent)
        }

        function r() {
            var e = this, t = [], n = Array(21).join("-") + (+new Date * (1e16 * Math.random())).toString(36),
                r = XMLHttpRequest.prototype.send;
            this.getParts = function () {
                return t.toString()
            }, this.append = function (e, r, i) {
                t.push("--" + n + '\r\nContent-Disposition: form-data; name="' + e + '"'), r instanceof Blob ? (t.push('; filename="' + (i || "blob") + '"\r\nContent-Type: ' + r.type + "\r\n\r\n"), t.push(r)) : t.push("\r\n\r\n" + r), t.push("\r\n")
            }, XMLHttpRequest.prototype.send = function (o) {
                var a, s, u = this;
                o === e ? (t.push("--" + n + "--\r\n"), s = new i(t), a = new FileReader, a.onload = function () {
                    r.call(u, a.result)
                }, a.onerror = function (e) {
                    throw e
                }, a.readAsArrayBuffer(s), this.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + n), XMLHttpRequest.prototype.send = r) : r.call(this, o)
            }
        }

        var i = function () {
            try {
                return new Blob, !0
            } catch (e) {
                return !1
            }
        }() ? window.Blob : function (e, t) {
            var n = new (window.BlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder || window.MozBlobBuilder);
            return e.forEach(function (e) {
                n.append(e)
            }), n.getBlob(t ? t.type : void 0)
        };
        e.exports = {Blob: i, FormData: n() ? r : FormData}
    }, function (e, t, n) {
        var r, i;
        (function () {
            function n(e) {
                return !!e.exifdata
            }

            function o(e, t) {
                t = t || e.match(/^data\:([^\;]+)\;base64,/im)[1] || "", e = e.replace(/^data\:([^\;]+)\;base64,/gim, "");
                for (var n = atob(e), r = n.length, i = new ArrayBuffer(r), o = new Uint8Array(i), a = 0; r > a; a++) o[a] = n.charCodeAt(a);
                return i
            }

            function a(e, t) {
                var n = new XMLHttpRequest;
                n.open("GET", e, !0), n.responseType = "blob", n.onload = function (e) {
                    (200 == this.status || 0 === this.status) && t(this.response)
                }, n.send()
            }

            function s(e, t) {
                function n(n) {
                    var r = u(n), i = c(n);
                    e.exifdata = r || {}, e.iptcdata = i || {}, t && t.call(e)
                }

                if (e.src) if (/^data\:/i.test(e.src)) {
                    var r = o(e.src);
                    n(r)
                } else if (/^blob\:/i.test(e.src)) {
                    var i = new FileReader;
                    i.onload = function (e) {
                        n(e.target.result)
                    }, a(e.src, function (e) {
                        i.readAsArrayBuffer(e)
                    })
                } else {
                    var s = new XMLHttpRequest;
                    s.onload = function () {
                        200 == this.status || 0 === this.status ? n(s.response) : t(new Error("Could not load image")), s = null
                    }, s.open("GET", e.src, !0), s.responseType = "arraybuffer", s.send(null)
                } else if (window.FileReader && (e instanceof window.Blob || e instanceof window.File)) {
                    var i = new FileReader;
                    i.onload = function (e) {
                        p && console.log("Got file of length " + e.target.result.byteLength), n(e.target.result)
                    }, i.readAsArrayBuffer(e)
                }
            }

            function u(e) {
                var t = new DataView(e);
                if (p && console.log("Got file of length " + e.byteLength), 255 != t.getUint8(0) || 216 != t.getUint8(1)) return p && console.log("Not a valid JPEG"), !1;
                for (var n, r = 2, i = e.byteLength; i > r;) {
                    if (255 != t.getUint8(r)) return p && console.log("Not a valid marker at offset " + r + ", found: " + t.getUint8(r)), !1;
                    if (n = t.getUint8(r + 1), p && console.log(n), 225 == n) return p && console.log("Found 0xFFE1 marker"), g(t, r + 4, t.getUint16(r + 2) - 2);
                    r += 2 + t.getUint16(r + 2)
                }
            }

            function c(e) {
                var t = new DataView(e);
                if (p && console.log("Got file of length " + e.byteLength), 255 != t.getUint8(0) || 216 != t.getUint8(1)) return p && console.log("Not a valid JPEG"), !1;
                for (var n = 2, r = e.byteLength, i = function (e, t) {
                    return 56 === e.getUint8(t) && 66 === e.getUint8(t + 1) && 73 === e.getUint8(t + 2) && 77 === e.getUint8(t + 3) && 4 === e.getUint8(t + 4) && 4 === e.getUint8(t + 5)
                }; r > n;) {
                    if (i(t, n)) {
                        var o = t.getUint8(n + 7);
                        o % 2 !== 0 && (o += 1), 0 === o && (o = 4);
                        var a = n + 8 + o, s = t.getUint16(n + 6 + o);
                        return l(e, a, s)
                    }
                    n++
                }
            }

            function l(e, t, n) {
                for (var r, i, o, a, s, u = new DataView(e), c = {}, l = t; t + n > l;) 28 === u.getUint8(l) && 2 === u.getUint8(l + 1) && (a = u.getUint8(l + 2), a in S && (o = u.getInt16(l + 3), s = o + 5, i = S[a], r = h(u, l + 5, o), c.hasOwnProperty(i) ? c[i] instanceof Array ? c[i].push(r) : c[i] = [c[i], r] : c[i] = r)), l++;
                return c
            }

            function f(e, t, n, r, i) {
                var o, a, s, u = e.getUint16(n, !i), c = {};
                for (s = 0; u > s; s++) o = n + 12 * s + 2, a = r[e.getUint16(o, !i)], !a && p && console.log("Unknown tag: " + e.getUint16(o, !i)), c[a] = d(e, o, t, n, i);
                return c
            }

            function d(e, t, n, r, i) {
                var o, a, s, u, c, l, f = e.getUint16(t + 2, !i), d = e.getUint32(t + 4, !i),
                    g = e.getUint32(t + 8, !i) + n;
                switch (f) {
                    case 1:
                    case 7:
                        if (1 == d) return e.getUint8(t + 8, !i);
                        for (o = d > 4 ? g : t + 8, a = [], u = 0; d > u; u++) a[u] = e.getUint8(o + u);
                        return a;
                    case 2:
                        return o = d > 4 ? g : t + 8, h(e, o, d - 1);
                    case 3:
                        if (1 == d) return e.getUint16(t + 8, !i);
                        for (o = d > 2 ? g : t + 8, a = [], u = 0; d > u; u++) a[u] = e.getUint16(o + 2 * u, !i);
                        return a;
                    case 4:
                        if (1 == d) return e.getUint32(t + 8, !i);
                        for (a = [], u = 0; d > u; u++) a[u] = e.getUint32(g + 4 * u, !i);
                        return a;
                    case 5:
                        if (1 == d) return c = e.getUint32(g, !i), l = e.getUint32(g + 4, !i), s = new Number(c / l), s.numerator = c, s.denominator = l, s;
                        for (a = [], u = 0; d > u; u++) c = e.getUint32(g + 8 * u, !i), l = e.getUint32(g + 4 + 8 * u, !i), a[u] = new Number(c / l), a[u].numerator = c, a[u].denominator = l;
                        return a;
                    case 9:
                        if (1 == d) return e.getInt32(t + 8, !i);
                        for (a = [], u = 0; d > u; u++) a[u] = e.getInt32(g + 4 * u, !i);
                        return a;
                    case 10:
                        if (1 == d) return e.getInt32(g, !i) / e.getInt32(g + 4, !i);
                        for (a = [], u = 0; d > u; u++) a[u] = e.getInt32(g + 8 * u, !i) / e.getInt32(g + 4 + 8 * u, !i);
                        return a
                }
            }

            function h(e, t, n) {
                var r, i = "";
                for (r = t; t + n > r; r++) i += String.fromCharCode(e.getUint8(r));
                return i
            }

            function g(e, t) {
                if ("Exif" != h(e, t, 4)) return p && console.log("Not valid EXIF data! " + h(e, t, 4)), !1;
                var n, r, i, o, a, s = t + 6;
                if (18761 == e.getUint16(s)) n = !1; else {
                    if (19789 != e.getUint16(s)) return p && console.log("Not valid TIFF data! (no 0x4949 or 0x4D4D)"), !1;
                    n = !0
                }
                if (42 != e.getUint16(s + 2, !n)) return p && console.log("Not valid TIFF data! (no 0x002A)"), !1;
                var u = e.getUint32(s + 4, !n);
                if (8 > u) return p && console.log("Not valid TIFF data! (First offset less than 8)", e.getUint32(s + 4, !n)), !1;
                if (r = f(e, s, s + u, v, n), r.ExifIFDPointer) {
                    o = f(e, s, s + r.ExifIFDPointer, w, n);
                    for (i in o) {
                        switch (i) {
                            case"LightSource":
                            case"Flash":
                            case"MeteringMode":
                            case"ExposureProgram":
                            case"SensingMethod":
                            case"SceneCaptureType":
                            case"SceneType":
                            case"CustomRendered":
                            case"WhiteBalance":
                            case"GainControl":
                            case"Contrast":
                            case"Saturation":
                            case"Sharpness":
                            case"SubjectDistanceRange":
                            case"FileSource":
                                o[i] = b[i][o[i]];
                                break;
                            case"ExifVersion":
                            case"FlashpixVersion":
                                o[i] = String.fromCharCode(o[i][0], o[i][1], o[i][2], o[i][3]);
                                break;
                            case"ComponentsConfiguration":
                                o[i] = b.Components[o[i][0]] + b.Components[o[i][1]] + b.Components[o[i][2]] + b.Components[o[i][3]]
                        }
                        r[i] = o[i]
                    }
                }
                if (r.GPSInfoIFDPointer) {
                    a = f(e, s, s + r.GPSInfoIFDPointer, y, n);
                    for (i in a) {
                        switch (i) {
                            case"GPSVersionID":
                                a[i] = a[i][0] + "." + a[i][1] + "." + a[i][2] + "." + a[i][3]
                        }
                        r[i] = a[i]
                    }
                }
                return r
            }

            var p = !1, m = function (e) {
                return e instanceof m ? e : this instanceof m ? void(this.EXIFwrapped = e) : new m(e)
            };
            "undefined" != typeof e && e.exports && (t = e.exports = m), t.EXIF = m;
            var w = m.Tags = {
                36864: "ExifVersion",
                40960: "FlashpixVersion",
                40961: "ColorSpace",
                40962: "PixelXDimension",
                40963: "PixelYDimension",
                37121: "ComponentsConfiguration",
                37122: "CompressedBitsPerPixel",
                37500: "MakerNote",
                37510: "UserComment",
                40964: "RelatedSoundFile",
                36867: "DateTimeOriginal",
                36868: "DateTimeDigitized",
                37520: "SubsecTime",
                37521: "SubsecTimeOriginal",
                37522: "SubsecTimeDigitized",
                33434: "ExposureTime",
                33437: "FNumber",
                34850: "ExposureProgram",
                34852: "SpectralSensitivity",
                34855: "ISOSpeedRatings",
                34856: "OECF",
                37377: "ShutterSpeedValue",
                37378: "ApertureValue",
                37379: "BrightnessValue",
                37380: "ExposureBias",
                37381: "MaxApertureValue",
                37382: "SubjectDistance",
                37383: "MeteringMode",
                37384: "LightSource",
                37385: "Flash",
                37396: "SubjectArea",
                37386: "FocalLength",
                41483: "FlashEnergy",
                41484: "SpatialFrequencyResponse",
                41486: "FocalPlaneXResolution",
                41487: "FocalPlaneYResolution",
                41488: "FocalPlaneResolutionUnit",
                41492: "SubjectLocation",
                41493: "ExposureIndex",
                41495: "SensingMethod",
                41728: "FileSource",
                41729: "SceneType",
                41730: "CFAPattern",
                41985: "CustomRendered",
                41986: "ExposureMode",
                41987: "WhiteBalance",
                41988: "DigitalZoomRation",
                41989: "FocalLengthIn35mmFilm",
                41990: "SceneCaptureType",
                41991: "GainControl",
                41992: "Contrast",
                41993: "Saturation",
                41994: "Sharpness",
                41995: "DeviceSettingDescription",
                41996: "SubjectDistanceRange",
                40965: "InteroperabilityIFDPointer",
                42016: "ImageUniqueID"
            }, v = m.TiffTags = {
                256: "ImageWidth",
                257: "ImageHeight",
                34665: "ExifIFDPointer",
                34853: "GPSInfoIFDPointer",
                40965: "InteroperabilityIFDPointer",
                258: "BitsPerSample",
                259: "Compression",
                262: "PhotometricInterpretation",
                274: "Orientation",
                277: "SamplesPerPixel",
                284: "PlanarConfiguration",
                530: "YCbCrSubSampling",
                531: "YCbCrPositioning",
                282: "XResolution",
                283: "YResolution",
                296: "ResolutionUnit",
                273: "StripOffsets",
                278: "RowsPerStrip",
                279: "StripByteCounts",
                513: "JPEGInterchangeFormat",
                514: "JPEGInterchangeFormatLength",
                301: "TransferFunction",
                318: "WhitePoint",
                319: "PrimaryChromaticities",
                529: "YCbCrCoefficients",
                532: "ReferenceBlackWhite",
                306: "DateTime",
                270: "ImageDescription",
                271: "Make",
                272: "Model",
                305: "Software",
                315: "Artist",
                33432: "Copyright"
            }, y = m.GPSTags = {
                0: "GPSVersionID",
                1: "GPSLatitudeRef",
                2: "GPSLatitude",
                3: "GPSLongitudeRef",
                4: "GPSLongitude",
                5: "GPSAltitudeRef",
                6: "GPSAltitude",
                7: "GPSTimeStamp",
                8: "GPSSatellites",
                9: "GPSStatus",
                10: "GPSMeasureMode",
                11: "GPSDOP",
                12: "GPSSpeedRef",
                13: "GPSSpeed",
                14: "GPSTrackRef",
                15: "GPSTrack",
                16: "GPSImgDirectionRef",
                17: "GPSImgDirection",
                18: "GPSMapDatum",
                19: "GPSDestLatitudeRef",
                20: "GPSDestLatitude",
                21: "GPSDestLongitudeRef",
                22: "GPSDestLongitude",
                23: "GPSDestBearingRef",
                24: "GPSDestBearing",
                25: "GPSDestDistanceRef",
                26: "GPSDestDistance",
                27: "GPSProcessingMethod",
                28: "GPSAreaInformation",
                29: "GPSDateStamp",
                30: "GPSDifferential"
            }, b = m.StringValues = {
                ExposureProgram: {
                    0: "Not defined",
                    1: "Manual",
                    2: "Normal program",
                    3: "Aperture priority",
                    4: "Shutter priority",
                    5: "Creative program",
                    6: "Action program",
                    7: "Portrait mode",
                    8: "Landscape mode"
                },
                MeteringMode: {
                    0: "Unknown",
                    1: "Average",
                    2: "CenterWeightedAverage",
                    3: "Spot",
                    4: "MultiSpot",
                    5: "Pattern",
                    6: "Partial",
                    255: "Other"
                },
                LightSource: {
                    0: "Unknown",
                    1: "Daylight",
                    2: "Fluorescent",
                    3: "Tungsten (incandescent light)",
                    4: "Flash",
                    9: "Fine weather",
                    10: "Cloudy weather",
                    11: "Shade",
                    12: "Daylight fluorescent (D 5700 - 7100K)",
                    13: "Day white fluorescent (N 4600 - 5400K)",
                    14: "Cool white fluorescent (W 3900 - 4500K)",
                    15: "White fluorescent (WW 3200 - 3700K)",
                    17: "Standard light A",
                    18: "Standard light B",
                    19: "Standard light C",
                    20: "D55",
                    21: "D65",
                    22: "D75",
                    23: "D50",
                    24: "ISO studio tungsten",
                    255: "Other"
                },
                Flash: {
                    0: "Flash did not fire",
                    1: "Flash fired",
                    5: "Strobe return light not detected",
                    7: "Strobe return light detected",
                    9: "Flash fired, compulsory flash mode",
                    13: "Flash fired, compulsory flash mode, return light not detected",
                    15: "Flash fired, compulsory flash mode, return light detected",
                    16: "Flash did not fire, compulsory flash mode",
                    24: "Flash did not fire, auto mode",
                    25: "Flash fired, auto mode",
                    29: "Flash fired, auto mode, return light not detected",
                    31: "Flash fired, auto mode, return light detected",
                    32: "No flash function",
                    65: "Flash fired, red-eye reduction mode",
                    69: "Flash fired, red-eye reduction mode, return light not detected",
                    71: "Flash fired, red-eye reduction mode, return light detected",
                    73: "Flash fired, compulsory flash mode, red-eye reduction mode",
                    77: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",
                    79: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",
                    89: "Flash fired, auto mode, red-eye reduction mode",
                    93: "Flash fired, auto mode, return light not detected, red-eye reduction mode",
                    95: "Flash fired, auto mode, return light detected, red-eye reduction mode"
                },
                SensingMethod: {
                    1: "Not defined",
                    2: "One-chip color area sensor",
                    3: "Two-chip color area sensor",
                    4: "Three-chip color area sensor",
                    5: "Color sequential area sensor",
                    7: "Trilinear sensor",
                    8: "Color sequential linear sensor"
                },
                SceneCaptureType: {0: "Standard", 1: "Landscape", 2: "Portrait", 3: "Night scene"},
                SceneType: {1: "Directly photographed"},
                CustomRendered: {0: "Normal process", 1: "Custom process"},
                WhiteBalance: {0: "Auto white balance", 1: "Manual white balance"},
                GainControl: {0: "None", 1: "Low gain up", 2: "High gain up", 3: "Low gain down", 4: "High gain down"},
                Contrast: {0: "Normal", 1: "Soft", 2: "Hard"},
                Saturation: {0: "Normal", 1: "Low saturation", 2: "High saturation"},
                Sharpness: {0: "Normal", 1: "Soft", 2: "Hard"},
                SubjectDistanceRange: {0: "Unknown", 1: "Macro", 2: "Close view", 3: "Distant view"},
                FileSource: {3: "DSC"},
                Components: {0: "", 1: "Y", 2: "Cb", 3: "Cr", 4: "R", 5: "G", 6: "B"}
            }, S = {
                120: "caption",
                110: "credit",
                25: "keywords",
                55: "dateCreated",
                80: "byline",
                85: "bylineTitle",
                122: "captionWriter",
                105: "headline",
                116: "copyright",
                15: "category"
            };
            m.getData = function (e, t) {
                return (e instanceof Image || e instanceof HTMLImageElement) && !e.complete ? !1 : (n(e) ? t && t.call(e) : s(e, t), !0)
            }, m.getTag = function (e, t) {
                return n(e) ? e.exifdata[t] : void 0
            }, m.getAllTags = function (e) {
                if (!n(e)) return {};
                var t, r = e.exifdata, i = {};
                for (t in r) r.hasOwnProperty(t) && (i[t] = r[t]);
                return i
            }, m.pretty = function (e) {
                if (!n(e)) return "";
                var t, r = e.exifdata, i = "";
                for (t in r) r.hasOwnProperty(t) && (i += "object" == typeof r[t] ? r[t] instanceof Number ? t + " : " + r[t] + " [" + r[t].numerator + "/" + r[t].denominator + "]\r\n" : t + " : [" + r[t].length + " values]\r\n" : t + " : " + r[t] + "\r\n");
                return i
            }, m.readFromBinaryFile = function (e) {
                return u(e)
            }, r = [], i = function () {
                return m
            }.apply(t, r), !(void 0 !== i && (e.exports = i))
        }).call(this)
    }, function (e, t, n) {
        var r, i;
        !function () {
            function n(e) {
                var t = e.naturalWidth, n = e.naturalHeight;
                if (t * n > 1048576) {
                    var r = document.createElement("canvas");
                    r.width = r.height = 1;
                    var i = r.getContext("2d");
                    return i.drawImage(e, -t + 1, 0), 0 === i.getImageData(0, 0, 1, 1).data[3]
                }
                return !1
            }

            function o(e, t, n) {
                var r = document.createElement("canvas");
                r.width = 1, r.height = n;
                var i = r.getContext("2d");
                i.drawImage(e, 0, 0);
                for (var o = i.getImageData(0, 0, 1, n).data, a = 0, s = n, u = n; u > a;) {
                    var c = o[4 * (u - 1) + 3];
                    0 === c ? s = u : a = u, u = s + a >> 1
                }
                var l = u / n;
                return 0 === l ? 1 : l
            }

            function a(e, t, n) {
                var r = document.createElement("canvas");
                return s(e, r, t, n), r.toDataURL("image/jpeg", t.quality || .8)
            }

            function s(e, t, r, i) {
                var a = e.naturalWidth, s = e.naturalHeight, c = r.width, l = r.height, f = t.getContext("2d");
                f.save(), u(t, f, c, l, r.orientation);
                var d = n(e);
                d && (a /= 2, s /= 2);
                var h = 1024, g = document.createElement("canvas");
                g.width = g.height = h;
                for (var p = g.getContext("2d"), m = i ? o(e, a, s) : 1, w = Math.ceil(h * c / a), v = Math.ceil(h * l / s / m), y = 0, b = 0; s > y;) {
                    for (var S = 0, I = 0; a > S;) p.clearRect(0, 0, h, h), p.drawImage(e, -S, -y), f.drawImage(g, 0, 0, h, h, I, b, w, v), S += h, I += w;
                    y += h, b += v
                }
                f.restore(), g = p = null
            }

            function u(e, t, n, r, i) {
                switch (i) {
                    case 5:
                    case 6:
                    case 7:
                    case 8:
                        e.width = r, e.height = n;
                        break;
                    default:
                        e.width = n, e.height = r
                }
                switch (i) {
                    case 2:
                        t.translate(n, 0), t.scale(-1, 1);
                        break;
                    case 3:
                        t.translate(n, r), t.rotate(Math.PI);
                        break;
                    case 4:
                        t.translate(0, r), t.scale(1, -1);
                        break;
                    case 5:
                        t.rotate(.5 * Math.PI), t.scale(1, -1);
                        break;
                    case 6:
                        t.rotate(.5 * Math.PI), t.translate(0, -r);
                        break;
                    case 7:
                        t.rotate(.5 * Math.PI), t.translate(n, -r), t.scale(-1, 1);
                        break;
                    case 8:
                        t.rotate(-.5 * Math.PI), t.translate(-n, 0)
                }
            }

            function c(e) {
                if (window.Blob && e instanceof Blob) {
                    var t = new Image,
                        n = window.URL && window.URL.createObjectURL ? window.URL : window.webkitURL && window.webkitURL.createObjectURL ? window.webkitURL : null;
                    if (!n) throw Error("No createObjectURL function found to create blob url");
                    t.src = n.createObjectURL(e), this.blob = e, e = t
                }
                if (!e.naturalWidth && !e.naturalHeight) {
                    var r = this;
                    e.onload = function () {
                        var e = r.imageLoadListeners;
                        if (e) {
                            r.imageLoadListeners = null;
                            for (var t = 0, n = e.length; n > t; t++) e[t]()
                        }
                    }, this.imageLoadListeners = []
                }
                this.srcImage = e
            }

            c.prototype.render = function (e, t, n) {
                if (this.imageLoadListeners) {
                    var r = this;
                    return void this.imageLoadListeners.push(function () {
                        r.render(e, t, n)
                    })
                }
                t = t || {};
                var i = this.srcImage, o = i.src, u = o.length, c = i.naturalWidth, l = i.naturalHeight, f = t.width,
                    d = t.height, h = t.maxWidth, g = t.maxHeight,
                    p = this.blob && "image/jpeg" === this.blob.type || 0 === o.indexOf("data:image/jpeg") || o.indexOf(".jpg") === u - 4 || o.indexOf(".jpeg") === u - 5;
                f && !d ? d = l * f / c << 0 : d && !f ? f = c * d / l << 0 : (f = c, d = l), h && f > h && (f = h, d = l * f / c << 0), g && d > g && (d = g, f = c * d / l << 0);
                var m = {width: f, height: d};
                for (var w in t) m[w] = t[w];
                var v = e.tagName.toLowerCase();
                "img" === v ? e.src = a(this.srcImage, m, p) : "canvas" === v && s(this.srcImage, e, m, p), "function" == typeof this.onrender && this.onrender(e), n && n()
            }, r = [], i = function () {
                return c
            }.apply(t, r), !(void 0 !== i && (e.exports = i))
        }()
    }, function (e, t) {
        function n(e) {
            function t(e) {
                for (var t = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99], n = 0; 64 > n; n++) {
                    var r = F((t[n] * e + 50) / 100);
                    1 > r ? r = 1 : r > 255 && (r = 255), x[N[n]] = r
                }
                for (var i = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99], o = 0; 64 > o; o++) {
                    var a = F((i[o] * e + 50) / 100);
                    1 > a ? a = 1 : a > 255 && (a = 255), D[N[o]] = a
                }
                for (var s = [1, 1.387039845, 1.306562965, 1.175875602, 1, .785694958, .5411961, .275899379], u = 0, c = 0; 8 > c; c++) for (var l = 0; 8 > l; l++) U[u] = 1 / (x[N[u]] * s[c] * s[l] * 8), C[u] = 1 / (D[N[u]] * s[c] * s[l] * 8), u++
            }

            function n(e, t) {
                for (var n = 0, r = 0, i = new Array, o = 1; 16 >= o; o++) {
                    for (var a = 1; a <= e[o]; a++) i[t[r]] = [], i[t[r]][0] = n, i[t[r]][1] = o, r++, n++;
                    n *= 2
                }
                return i
            }

            function r() {
                y = n(W, H), b = n(V, X), S = n(z, q), I = n(Q, Y)
            }

            function i() {
                for (var e = 1, t = 2, n = 1; 15 >= n; n++) {
                    for (var r = e; t > r; r++) A[32767 + r] = n, T[32767 + r] = [], T[32767 + r][1] = n, T[32767 + r][0] = r;
                    for (var i = -(t - 1); -e >= i; i++) A[32767 + i] = n, T[32767 + i] = [], T[32767 + i][1] = n, T[32767 + i][0] = t - 1 + i;
                    e <<= 1, t <<= 1
                }
            }

            function o() {
                for (var e = 0; 256 > e; e++) k[e] = 19595 * e, k[e + 256 >> 0] = 38470 * e, k[e + 512 >> 0] = 7471 * e + 32768, k[e + 768 >> 0] = -11059 * e, k[e + 1024 >> 0] = -21709 * e, k[e + 1280 >> 0] = 32768 * e + 8421375, k[e + 1536 >> 0] = -27439 * e, k[e + 1792 >> 0] = -5329 * e
            }

            function a(e) {
                for (var t = e[0], n = e[1] - 1; n >= 0;) t & 1 << n && (G |= 1 << O), n--, O--, 0 > O && (255 == G ? (s(255), s(0)) : s(G), O = 7, G = 0)
            }

            function s(e) {
                M.push(j[e])
            }

            function u(e) {
                s(e >> 8 & 255), s(255 & e)
            }

            function c(e, t) {
                var n, r, i, o, a, s, u, c, l, f = 0;
                const d = 8, h = 64;
                for (l = 0; d > l; ++l) {
                    n = e[f], r = e[f + 1], i = e[f + 2], o = e[f + 3], a = e[f + 4], s = e[f + 5], u = e[f + 6], c = e[f + 7];
                    var g = n + c, p = n - c, m = r + u, w = r - u, v = i + s, y = i - s, b = o + a, S = o - a,
                        I = g + b, P = g - b, F = m + v, x = m - v;
                    e[f] = I + F, e[f + 4] = I - F;
                    var D = .707106781 * (x + P);
                    e[f + 2] = P + D, e[f + 6] = P - D, I = S + y, F = y + w, x = w + p;
                    var U = .382683433 * (I - x), C = .5411961 * I + U, T = 1.306562965 * x + U, A = .707106781 * F,
                        R = p + A, M = p - A;
                    e[f + 5] = M + C, e[f + 3] = M - C, e[f + 1] = R + T, e[f + 7] = R - T, f += 8
                }
                for (f = 0, l = 0; d > l; ++l) {
                    n = e[f], r = e[f + 8], i = e[f + 16], o = e[f + 24], a = e[f + 32], s = e[f + 40], u = e[f + 48], c = e[f + 56];
                    var G = n + c, O = n - c, _ = r + u, B = r - u, E = i + s, j = i - s, k = o + a, N = o - a,
                        W = G + k, H = G - k, z = _ + E, q = _ - E;
                    e[f] = W + z, e[f + 32] = W - z;
                    var V = .707106781 * (q + H);
                    e[f + 16] = H + V, e[f + 48] = H - V, W = N + j, z = j + B, q = B + O;
                    var X = .382683433 * (W - q), Q = .5411961 * W + X, Y = 1.306562965 * q + X, K = .707106781 * z,
                        J = O + K, Z = O - K;
                    e[f + 40] = Z + Q, e[f + 24] = Z - Q, e[f + 8] = J + Y, e[f + 56] = J - Y, f++
                }
                var $;
                for (l = 0; h > l; ++l) $ = e[l] * t[l], L[l] = $ > 0 ? $ + .5 | 0 : $ - .5 | 0;
                return L
            }

            function l() {
                u(65504), u(16), s(74), s(70), s(73), s(70), s(0), s(1), s(1), s(0), u(1), u(1), s(0), s(0)
            }

            function f(e, t) {
                u(65472), u(17), s(8), u(t), u(e), s(3), s(1), s(17), s(0), s(2), s(17), s(1), s(3), s(17), s(1)
            }

            function d() {
                u(65499), u(132), s(0);
                for (var e = 0; 64 > e; e++) s(x[e]);
                s(1);
                for (var t = 0; 64 > t; t++) s(D[t])
            }

            function h() {
                u(65476), u(418), s(0);
                for (var e = 0; 16 > e; e++) s(W[e + 1]);
                for (var t = 0; 11 >= t; t++) s(H[t]);
                s(16);
                for (var n = 0; 16 > n; n++) s(z[n + 1]);
                for (var r = 0; 161 >= r; r++) s(q[r]);
                s(1);
                for (var i = 0; 16 > i; i++) s(V[i + 1]);
                for (var o = 0; 11 >= o; o++) s(X[o]);
                s(17);
                for (var a = 0; 16 > a; a++) s(Q[a + 1]);
                for (var c = 0; 161 >= c; c++) s(Y[c])
            }

            function g() {
                u(65498), u(12), s(3), s(1), s(0), s(2), s(17), s(3), s(17), s(0), s(63), s(0)
            }

            function p(e, t, n, r, i) {
                var o, s = i[0], u = i[240];
                const l = 16, f = 63, d = 64;
                for (var h = c(e, t), g = 0; d > g; ++g) R[N[g]] = h[g];
                var p = R[0] - n;
                n = R[0], 0 == p ? a(r[0]) : (o = 32767 + p, a(r[A[o]]), a(T[o]));
                for (var m = 63; m > 0 && 0 == R[m]; m--) ;
                if (0 == m) return a(s), n;
                for (var w, v = 1; m >= v;) {
                    for (var y = v; 0 == R[v] && m >= v; ++v) ;
                    var b = v - y;
                    if (b >= l) {
                        w = b >> 4;
                        for (var S = 1; w >= S; ++S) a(u);
                        b = 15 & b
                    }
                    o = 32767 + R[v], a(i[(b << 4) + A[o]]), a(T[o]), v++
                }
                return m != f && a(s), n
            }

            function m() {
                for (var e = String.fromCharCode, t = 0; 256 > t; t++) j[t] = e(t)
            }

            function w(e) {
                if (0 >= e && (e = 1), e > 100 && (e = 100), P != e) {
                    var n = 0;
                    n = 50 > e ? Math.floor(5e3 / e) : Math.floor(200 - 2 * e), t(n), P = e
                }
            }

            function v() {
                var t = (new Date).getTime();
                e || (e = 50), m(), r(), i(), o(), w(e);
                (new Date).getTime() - t
            }

            var y, b, S, I, P, F = (Math.round, Math.floor), x = new Array(64), D = new Array(64), U = new Array(64),
                C = new Array(64), T = new Array(65535), A = new Array(65535), L = new Array(64), R = new Array(64),
                M = [], G = 0, O = 7, _ = new Array(64), B = new Array(64), E = new Array(64), j = new Array(256),
                k = new Array(2048),
                N = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63],
                W = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], H = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
                z = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125],
                q = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250],
                V = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0], X = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
                Q = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119],
                Y = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];
            this.encode = function (e, t, n) {
                var r = (new Date).getTime();
                t && w(t), M = new Array, G = 0, O = 7, u(65496), l(), d(), f(e.width, e.height), h(), g();
                var i = 0, o = 0, s = 0;
                G = 0, O = 7, this.encode.displayName = "_encode_";
                for (var c, m, v, P, F, x, D, T, A, L = e.data, R = e.width, j = e.height, N = 4 * R, W = 0; j > W;) {
                    for (c = 0; N > c;) {
                        for (F = N * W + c, x = F, D = -1, T = 0, A = 0; 64 > A; A++) T = A >> 3, D = 4 * (7 & A), x = F + T * N + D, W + T >= j && (x -= N * (W + 1 + T - j)), c + D >= N && (x -= c + D - N + 4), m = L[x++], v = L[x++], P = L[x++], _[A] = (k[m] + k[v + 256 >> 0] + k[P + 512 >> 0] >> 16) - 128, B[A] = (k[m + 768 >> 0] + k[v + 1024 >> 0] + k[P + 1280 >> 0] >> 16) - 128, E[A] = (k[m + 1280 >> 0] + k[v + 1536 >> 0] + k[P + 1792 >> 0] >> 16) - 128;
                        i = p(_, U, i, y, S), o = p(B, C, o, b, I), s = p(E, C, s, b, I), c += 32
                    }
                    W += 8
                }
                if (O >= 0) {
                    var H = [];
                    H[1] = O + 1, H[0] = (1 << O + 1) - 1, a(H)
                }
                if (u(65497), n) {
                    for (var z = M.length, q = new Uint8Array(z), V = 0; z > V; V++) q[V] = M[V].charCodeAt();
                    M = [];
                    (new Date).getTime() - r;
                    return q
                }
                var X = "data:image/jpeg;base64," + btoa(M.join(""));
                M = [];
                (new Date).getTime() - r;
                return X
            }, v()
        }

        e.exports = n
    }, function (e, t, n) {
        function r(e, t) {
            var n = this;
            if (!e) throw new Error("没有收到图片，可能的解决方案：https://github.com/think2011/localResizeIMG/issues/7");
            t = t || {}, n.defaults = {width: null, height: null, fieldName: "file", quality: .7}, n.file = e;
            for (var r in t) t.hasOwnProperty(r) && (n.defaults[r] = t[r]);
            return this.init()
        }

        function i(e) {
            var t = null;
            return t = e ? [].filter.call(document.scripts, function (t) {
                return -1 !== t.src.indexOf(e)
            })[0] : document.scripts[document.scripts.length - 1], t ? t.src.substr(0, t.src.lastIndexOf("/")) : null
        }

        function o(e) {
            var t;
            t = e.split(",")[0].indexOf("base64") >= 0 ? atob(e.split(",")[1]) : unescape(e.split(",")[1]);
            for (var n = e.split(",")[0].split(":")[1].split(";")[0], r = new Uint8Array(t.length), i = 0; i < t.length; i++) r[i] = t.charCodeAt(i);
            return new s.Blob([r.buffer], {type: n})
        }

        n.p = i("lrz") + "/", window.URL = window.URL || window.webkitURL;
        var a = n(1), s = n(4), u = n(5), c = function (e) {
            var t = /OS (\d)_.* like Mac OS X/g.exec(e),
                n = /Android (\d.*?);/g.exec(e) || /Android\/(\d.*?) /g.exec(e);
            return {
                oldIOS: t ? +t.pop() < 8 : !1,
                oldAndroid: n ? +n.pop().substr(0, 3) < 4.5 : !1,
                iOS: /\(i[^;]+;( U;)? CPU.+Mac OS X/.test(e),
                android: /Android/g.test(e),
                mQQBrowser: /MQQBrowser/g.test(e)
            }
        }(navigator.userAgent);
        r.prototype.init = function () {
            var e = this, t = e.file, n = "string" == typeof t, r = /^data:/.test(t), i = new Image,
                u = document.createElement("canvas"), c = n ? t : URL.createObjectURL(t);
            if (e.img = i, e.blob = c, e.canvas = u, n ? e.fileName = r ? "base64.jpg" : t.split("/").pop() : e.fileName = t.name, !document.createElement("canvas").getContext) throw new Error("浏览器不支持canvas");
            return new a(function (n, a) {
                i.onerror = function () {
                    throw new Error("加载图片文件失败")
                }, i.onload = function () {
                    e._getBase64().then(function (e) {
                        return e.length < 10 && a("生成base64失败"), e
                    }).then(function (r) {
                        var i = null;
                        "object" == typeof e.file && r.length > e.file.size ? (i = new FormData, t = e.file) : (i = new s.FormData, t = o(r)), i.append(e.defaults.fieldName, t, e.fileName.replace(/\..+/g, ".jpg")), n({
                            formData: i,
                            fileLen: +t.size,
                            base64: r,
                            base64Len: r.length,
                            origin: e.file
                        });
                        for (var a in e) e.hasOwnProperty(a) && (e[a] = null);
                        URL.revokeObjectURL(e.blob)
                    })
                }, !r && (i.crossOrigin = "*"), i.src = c
            })
        }, r.prototype._getBase64 = function () {
            var e = this, t = e.img, n = e.file, r = e.canvas;
            return new a(function (i) {
                try {
                    u.getData("object" == typeof n ? n : t, function () {
                        e.orientation = u.getTag(this, "Orientation"), e.resize = e._getResize(), e.ctx = r.getContext("2d"), r.width = e.resize.width, r.height = e.resize.height, e.ctx.fillStyle = "#fff", e.ctx.fillRect(0, 0, r.width, r.height), c.oldIOS ? e._createBase64ForOldIOS().then(i) : e._createBase64().then(i)
                    })
                } catch (o) {
                    throw new Error(o)
                }
            })
        }, r.prototype._createBase64ForOldIOS = function () {
            var e = this, t = e.img, r = e.canvas, i = e.defaults, o = e.orientation;
            return new a(function (e) {
                !function () {
                    var a = [n(6)];
                    (function (n) {
                        var a = new n(t);
                        "5678".indexOf(o) > -1 ? a.render(r, {
                            width: r.height,
                            height: r.width,
                            orientation: o
                        }) : a.render(r, {
                            width: r.width,
                            height: r.height,
                            orientation: o
                        }), e(r.toDataURL("image/jpeg", i.quality))
                    }).apply(null, a)
                }()
            })
        }, r.prototype._createBase64 = function () {
            var e = this, t = e.resize, r = e.img, i = e.canvas, o = e.ctx, s = e.defaults, u = e.orientation;
            switch (u) {
                case 3:
                    o.rotate(180 * Math.PI / 180), o.drawImage(r, -t.width, -t.height, t.width, t.height);
                    break;
                case 6:
                    o.rotate(90 * Math.PI / 180), o.drawImage(r, 0, -t.width, t.height, t.width);
                    break;
                case 8:
                    o.rotate(270 * Math.PI / 180), o.drawImage(r, -t.height, 0, t.height, t.width);
                    break;
                case 2:
                    o.translate(t.width, 0), o.scale(-1, 1), o.drawImage(r, 0, 0, t.width, t.height);
                    break;
                case 4:
                    o.translate(t.width, 0), o.scale(-1, 1), o.rotate(180 * Math.PI / 180), o.drawImage(r, -t.width, -t.height, t.width, t.height);
                    break;
                case 5:
                    o.translate(t.width, 0), o.scale(-1, 1), o.rotate(90 * Math.PI / 180), o.drawImage(r, 0, -t.width, t.height, t.width);
                    break;
                case 7:
                    o.translate(t.width, 0), o.scale(-1, 1), o.rotate(270 * Math.PI / 180), o.drawImage(r, -t.height, 0, t.height, t.width);
                    break;
                default:
                    o.drawImage(r, 0, 0, t.width, t.height)
            }
            return new a(function (e) {
                c.oldAndroid || c.mQQBrowser || !navigator.userAgent ? !function () {
                    var t = [n(7)];
                    (function (t) {
                        var n = new t, r = o.getImageData(0, 0, i.width, i.height);
                        e(n.encode(r, 100 * s.quality))
                    }).apply(null, t)
                }() : e(i.toDataURL("image/jpeg", s.quality))
            })
        }, r.prototype._getResize = function () {
            var e = this, t = e.img, n = e.defaults, r = n.width, i = n.height, o = e.orientation,
                a = {width: t.width, height: t.height};
            if ("5678".indexOf(o) > -1 && (a.width = t.height, a.height = t.width), a.width < r || a.height < i) return a;
            var s = a.width / a.height;
            for (r && i ? s >= r / i ? a.width > r && (a.width = r, a.height = Math.ceil(r / s)) : a.height > i && (a.height = i, a.width = Math.ceil(i * s)) : r ? r < a.width && (a.width = r, a.height = Math.ceil(r / s)) : i && i < a.height && (a.width = Math.ceil(i * s), a.height = i); a.width >= 3264 || a.height >= 2448;) a.width *= .8, a.height *= .8;
            return a
        }, window.lrz = function (e, t) {
            return new r(e, t)
        }, window.lrz.version = "4.8.35", e.exports = window.lrz
    }])
});